/*
 * Copyright (C) 2018 wxyz <hyhjwzx@126.com>
 * This program can be distributed under the terms of the GNU GPL Version 2.
 * See the file LICENSE.
 *
 */

package ren.wxyz.study.euler.hp01;

import ren.wxyz.study.euler.base.IProblem;
import ren.wxyz.study.euler.util.ConsoleHelper;
import ren.wxyz.study.euler.util.MathHelper;

import java.util.ArrayList;

/**
 * 第 5 题
 *
 * @auther wxyz 2018-02-28_21:28
 * @since 1.0
 */
public class P005 implements IProblem {
    @Override
    public void main(String[] args) throws Throwable {
        int limitNumber = Integer.parseInt(args[0]);
        int[] num = MathHelper.initNumberArray(limitNumber);

        // 暴力拆解
        int res = v1(num);
        ConsoleHelper.print(res + " 1 ~ " + num.length);

        // 分解这些数，从给定数列表中剔除是其他数的因数的数
        // 从最大的开始分解，直到中间值
        //
    }

    /**
     * 对一个数分解因数
     *
     * @param num 被分解的数
     * @return 因数列表
     */
    private Integer[] decomposeFactor(int num) {
        ArrayList<Integer> factors = new ArrayList<>();


        return factors.toArray(new Integer[factors.size()]);
    }

    /**
     * 暴力拆解，一个一个试出来
     *
     * @param num 整除的数列
     * @return 最小的那个数
     */
    private int v1(int[] num) {
        int tmp = num[num.length - 1];
        while (true) {
            tmp++;

            boolean ok = true;
            for (int i = 0; i < num.length; i++) {
                if (tmp % num[i] != 0) {
                    ok = false;
                    break;
                }
            }

            if (ok) {
                return tmp;
            }
        }
    }
}
